﻿
using System;
using System.Collections.Generic;
using LarDosIdosos.Business.Model;
using LarDosIdosos.NewAcessaDados;
using MySql.Data.MySqlClient;

namespace LarDosIdosos.Business
{
    public class DBTelefone
    {
        private string _stringConnection;

        public DBTelefone(string stringConnnection)
        {
            _stringConnection = stringConnnection;
        }

        /// <summary>
        /// Busca uma lista de funcionários
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public List<Telefone> SelectTelefones(string sql)
        {

            AcessaDados conn = new AcessaDados(_stringConnection);
            try
            {
                conn.OpenConnection();
                var reader = conn.ExecuteDataReader(sql);
                if (reader.HasRows)
                {
                    return MontaListaDeTelefones(reader);
                }
                return new List<Telefone>();
            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível consultar o tipo documento", ex);
            }
            finally
            {
                conn.CloseConection();
            }
        }

        private List<Telefone> MontaListaDeTelefones(MySqlDataReader reader)
        {
            List<Telefone> Telefones = new List<Telefone>();
            while (reader.Read())
            {
                Telefones.Add(MontaTelefone(reader));
            }
            return Telefones;
        }

        private Telefone MontaTelefone(MySqlDataReader reader)
        {
            Telefone telefone = new Telefone();
            telefone.Codigo_Telefone = Convert.ToInt32(reader["Codigo_Telefone"]);
            telefone.Numero_Telefone = InsereMascaraTelefone(reader["Numero_Telefone"].ToString());
            return telefone;
        }

        private string InsereMascaraTelefone(string fone)
        {
            long longFone = Convert.ToInt64(fone);
            return String.Format(@"{0:\(000\)0000\-0000}", longFone);
        }

        private string RemoveMascaraTelefone(string telefone)
        {
            return telefone.Replace("(", "").Replace(")", "").Replace("-", "");
        }

        public int Delete(string sql)
        {
            AcessaDados conn = new AcessaDados(_stringConnection);
            try
            {
                conn.OpenConnection();
                return conn.ExecuteNonQuery(sql);
            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível  deletar o telefone", ex);
            }
            finally
            {
                conn.CloseConection();
            }
        }

        public bool Update(string sql)
        {
            AcessaDados conn = new AcessaDados(_stringConnection);
            try
            {
                conn.OpenConnection();
                int updates = conn.ExecuteNonQuery(sql);
                if (updates > 0)
                {
                    return true;
                }
                return false;
            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível atualizar o telefone", ex);
            }
            finally
            {
                conn.CloseConection();
            }
        }

        public int Insert(string sql)
        {
            AcessaDados conn = new AcessaDados(_stringConnection);
            try
            {
                conn.OpenConnection();
                return conn.ExecuteNonQuery(sql);
            }
            catch (Exception ex)
            {
                throw new Exception("Não foi possível inserir o telefone", ex);
            }
            finally
            {
                conn.CloseConection();
            }
        }
    }
}
